*** file.c.org	2009-06-29 09:17:41.000000000 +0200
--- file.c	2009-06-29 09:18:27.000000000 +0200
***************
*** 82,107 ****
  	char *table = table_nop;	/* optionally invert bits in nibble */
  	register inc = 0;		/* optionally swap nimmles */
  	int bits;
  
  	t = s = fbuf;
  
  	/* Does this look like an X bitmap ? */
  	if (sscanf(s, "#define %*s %d", &bits) == 1) {
  		if (bits == 48) {
! 			char type1[128];
! 			char type2[128];
  			while (*s && *s++ != '\n');
  			if (sscanf(s, "#define %*s %d", &bits) == 1) if (bits == 48) {
  				while (*s && *s++ != '\n');
! 				if (sscanf(s, "static %s %s", type1,type2)==2 &&
  					(!strcmp(type1, "char") || 
  				    	 !strcmp(type2, "char"))) {
  						while (*s && *s++ != '\n');
  						inc = 1;
  						table = table_inv;
  					}
! 				else fprintf(stderr,
! 		"warning: xbitmap line 3 not static [unsigned] short ...\n");
  			}
  			else fprintf(stderr, "warning: xbitmaps must be 48x48\n");
  		}
--- 82,110 ----
  	char *table = table_nop;	/* optionally invert bits in nibble */
  	register inc = 0;		/* optionally swap nimmles */
  	int bits;
+ 	int len;
  
  	t = s = fbuf;
  
  	/* Does this look like an X bitmap ? */
  	if (sscanf(s, "#define %*s %d", &bits) == 1) {
  		if (bits == 48) {
! 			char type1[256];
! 			char type2[256];
  			while (*s && *s++ != '\n');
  			if (sscanf(s, "#define %*s %d", &bits) == 1) if (bits == 48) {
  				while (*s && *s++ != '\n');
! 				for (len=0; s[len] && s[len]!='\n'; len++);
! 				if (len<255) {
! 				  if (sscanf(s, "static %s %s", type1,type2)==2 &&
  					(!strcmp(type1, "char") || 
  				    	 !strcmp(type2, "char"))) {
  						while (*s && *s++ != '\n');
  						inc = 1;
  						table = table_inv;
  					}
! 				  else fprintf(stderr, "warning: xbitmap line 3 not static [unsigned] short ...\n");
! 				} else fprintf(stderr, "warning: xbitmap line 3 too long\n");
  			}
  			else fprintf(stderr, "warning: xbitmaps must be 48x48\n");
  		}
